﻿Imports System.Web.Services

Imports BusinessEntities
Imports BusinessLogic
Imports Library

Public Class registrarpropuesta
    Inherits System.Web.UI.Page

    Dim strUser As String = "SchattenTod"

    Private Sub ObtenerConvocatorias()
        Try
            Me.ddlConvocatoria.DataSource = (New ConvocatoriaBL).ObtenerConvocatoriaActivas()
            Me.ddlConvocatoria.DataValueField = "idConvocatoria"
            Me.ddlConvocatoria.DataTextField = "nombre"
            Me.ddlConvocatoria.DataBind()

            Me.ddlConvocatoria.Items.Insert(0, New ListItem("-- Seleccione --", "0"))
        Catch ex As Exception
            Throw
        End Try
    End Sub

    Private Sub LimpiarConvocatoria()
        Me.lblCodigoConvocatoria.Text = ""
        Me.lblFechaCreacionConvocatoria.Text = ""
        Me.lblRequerimientoConvocatoria.Text = ""
        Me.lblFechaFinConvocatoria.Text = ""
        Me.imgRequiereVisita.ImageUrl = "~\images\NoCheck.gif"
    End Sub

    Private Sub LimpiarPropuesta()
        Me.txtFechaPropuesta.Text = String.Empty
        Me.txtPrecio.Text = ""
        Me.txtCodigoPropuestaProveedor.Text = ""
        Me.txtFechaVisita.Text = ""
        Me.txtPropuesta.Text = ""
    End Sub

    Private Sub MostrarConvocatoria(intConvocatoria As Integer)
        Try
            Dim objBE As ConvocatoriaBE = (New ConvocatoriaBL).ObtenerConvocatoria(intConvocatoria)

            Me.lblCodigoConvocatoria.Text = objBE.Codigo
            Me.lblFechaCreacionConvocatoria.Text = objBE.FechaCreacion.ToString("dd/MM/yyyy")
            ViewState("FechaCreacion") = objBE.FechaCreacion
            ViewState("FechaFin") = objBE.FechaFin
            Me.lblRequerimientoConvocatoria.Text = objBE.Requerimiento
            Me.lblFechaFinConvocatoria.Text = objBE.FechaFin.ToString("dd/MM/yyyy")
            If objBE.Visita Then
                Me.imgRequiereVisita.ImageUrl = "~\images\Check.png"
                ViewState("Visita") = "SI"
            Else
                Me.imgRequiereVisita.ImageUrl = "~\images\NoCheck.gif"
                ViewState("Visita") = "NO"
            End If
        Catch ex As Exception
            Throw
        End Try
    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            Try
                Me.ObtenerConvocatorias()
                'Me.ddlConvocatoria_SelectedIndexChanged(Nothing, Nothing)
                Me.LimpiarPropuesta()
            Catch ex As Exception
                LogAuditoria.LogInfo(strUser, "RegistrarPropuesta-Load", ex.Message)
            End Try            
        End If
    End Sub

    Protected Sub btnSalir_Click(sender As Object, e As EventArgs) Handles btnSalir.Click
        Response.Redirect("~/index.aspx")
    End Sub

    Protected Sub ddlConvocatoria_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlConvocatoria.SelectedIndexChanged
        Try
            If Me.ddlConvocatoria.SelectedValue.Equals("0") Then
                Me.ddlProveedor.Items.Clear()
                Me.ddlProveedor.Items.Insert(0, New ListItem("-- Seleccione --", "0"))

                Me.LimpiarConvocatoria()
            Else
                Me.ddlProveedor.DataSource = (New ConvocatoriaBL).ObtenerPreSeleccionadoPorConvocatoria(Integer.Parse(Me.ddlConvocatoria.SelectedValue))
                Me.ddlProveedor.DataValueField = "IdProveedor"
                Me.ddlProveedor.DataTextField = "NombreProveedor"
                Me.ddlProveedor.DataBind()

                Me.ddlProveedor.Items.Insert(0, New ListItem("-- Seleccione --", "0"))

                Me.MostrarConvocatoria(Integer.Parse(Me.ddlConvocatoria.SelectedValue))
            End If
        Catch ex As Exception
            LogAuditoria.LogInfo(strUser, "RegistrarPropuesta-ddlConvocatoria_SelectedIndexChanged", ex.Message)
        End Try        
    End Sub

    <WebMethod()> _
    Protected Sub btnRegistrar_Click(sender As Object, e As EventArgs) Handles btnRegistrar.Click
        Dim alertScript As String = "<script language='javascript'>alert('{0}')</script>"

        Try
            If Me.ValidarFormulario() Then
                Dim objBE As PropuestaBE = Me.ObtenerPropuesta
                If Me.RegistrarPropuesta(objBE) Then
                    Me.ddlConvocatoria.SelectedValue = "0"
                    Me.ddlConvocatoria_SelectedIndexChanged(Nothing, Nothing)
                    Me.LimpiarPropuesta()

                    alertScript = String.Format(alertScript, "se guardo la propuesta con codigo " & objBE.Id.ToString)
                Else
                    alertScript = String.Format(alertScript, "no se guardo la propuesta, intente de nuevo")                    
                End If
            End If
        Catch ex As Exception
            LogAuditoria.LogInfo(strUser, "RegistrarPropuesta-btnRegistrar_Click", ex.Message)
            alertScript = String.Format(alertScript, ex.Message)
        Finally
            Page.ClientScript.RegisterStartupScript(GetType(Page), "PopupScript", alertScript)
        End Try
    End Sub

    Private Function ValidarFormulario() As Boolean
        Try
            Dim fechaCreacion As DateTime = CDate(ViewState("FechaCreacion"))
            Dim fechaFin As DateTime = CDate(ViewState("FechaFin"))

            If Me.ddlConvocatoria.SelectedValue.Equals("0") Then
                Throw New Exception("Debe seleccionar la convocatoria")
            End If
            If Me.ddlProveedor.SelectedValue.Equals("0") Then
                Throw New Exception("Debe seleccionar al proveedor")
            End If
            If String.IsNullOrEmpty(Me.txtFechaPropuesta.Text.Trim) Then
                Throw New Exception("Debe ingresar la fecha de la propuesta")
            End If
            If Not IsDate(Me.txtFechaPropuesta.Text.Trim) Then
                Throw New Exception("Debe ingresar la fecha de la propuesta valida")
            End If

            Dim fechapropuesta As DateTime = CDate(Me.txtFechaPropuesta.Text)
            If fechapropuesta < fechaCreacion Then
                Throw New Exception("la fecha no esta en el rango de la convocatoria")
            End If
            If fechapropuesta > fechaFin Then
                Throw New Exception("la fecha no esta en el rango de la convocatoria")
            End If

            If String.IsNullOrEmpty(Me.txtPrecio.Text.Trim) Then
                Throw New Exception("Debe ingresar el precio de la propuesta")
            End If
            If Not IsNumeric(Me.txtPrecio.Text.Trim) Then
                Throw New Exception("Debe ingresar el precio de la propuesta valido")
            End If
            If Double.Parse(Me.txtPrecio.Text.Trim) <= 0 Then
                Throw New Exception("El precio debe mayor a cero")
            End If
            If String.IsNullOrEmpty(Me.txtCodigoPropuestaProveedor.Text.Trim) Then
                Throw New Exception("Debe ingresar la fecha de la propuesta")
            End If
            If ViewState("Visita").Equals("SI") Then
                If String.IsNullOrEmpty(Me.txtFechaVisita.Text.Trim) Then
                    Throw New Exception("Debe ingresar la fecha de la visita")
                End If
                If Not IsDate(Me.txtFechaVisita.Text.Trim) Then
                    Throw New Exception("Debe ingresar la fecha de la visita valida")
                End If
            End If
            If String.IsNullOrEmpty(Me.txtPropuesta.Text.Trim) Then
                Throw New Exception("Debe ingresar la fecha de la propuesta")
            End If

            Return True
        Catch ex As Exception
            Throw
        End Try
    End Function

    Private Function ObtenerPropuesta() As PropuestaBE
        Try
            Dim objBE As New PropuestaBE

            objBE.CodigoPropuestaProveedor = Me.txtCodigoPropuestaProveedor.Text.Trim
            objBE.FechaPropuesta = CDate(Me.txtFechaPropuesta.Text.Trim)
            If Not String.IsNullOrEmpty(Me.txtFechaVisita.Text.Trim) Then
                objBE.FechaVisita = CDate(Me.txtFechaVisita.Text.Trim)
            End If
            objBE.Id = 0
            objBE.Nombre = "Propuesta para la convocatoria " & Me.ddlConvocatoria.SelectedItem.Text
            objBE.Precio = Double.Parse(Me.txtPrecio.Text.Trim)
            objBE.Propuesta = Me.txtPropuesta.Text.Trim
            objBE.Preseleccionado = Integer.Parse(Me.ddlProveedor.SelectedValue)
            objBE.Convocatoria = Integer.Parse(Me.ddlConvocatoria.SelectedValue)

            Return objBE
        Catch ex As Exception
            Throw
        End Try        
    End Function

    Private Function RegistrarPropuesta(objBE As PropuestaBE) As Boolean
        Try
            Return (New PropuestaBL).RegistrarPropuesta(objBE)
        Catch ex As Exception
            Throw
        End Try
    End Function

End Class